package com.ganbo.pattern.template;

/**
 * 模板类
 *
 * @Author: ganbo
 * @Date: 2020/6/12 14:31
 */
public abstract class AbstractTemplate {

    /**
     * 模板方法，用于核心流程和算法的定义
     */
    public void templateMethod() {
        checkNumber();
        queueUp();
        handleBusiness();
        serviceEvaluation();
    }

    /**
     * 抽号
     */
    public void checkNumber() {
        System.out.println("抽号。。。");
    }

    /**
     * 排队
     */
    public void queueUp() {
        System.out.println("排队...");
    }

    /**
     * 业务办理(具体办理什么业务下沉到具体的业务实现类中实现)
     */
    public abstract void handleBusiness();

    /**
     * 服务评价
     */
    public void serviceEvaluation() {
        System.out.println("业务办理完毕,服务评价...");
    }
}
